////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  abf_3_4_0.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef ABF_3_4_0_H
#define ABF_3_4_0_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"
#include "ispglobalelements.h"

#define ABF_3_4_0_NAMESPACE_BEGIN namespace abf_3_4_0 {
#define ABF_3_4_0_NAMESPACE_END }

ABF_3_4_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// abf34_rgn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct abf34_rgn_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// bpc_fmax
    ///
    /// Tuning Level:  often_tune
    /// Description:   upper offset factor used in single bpc applied to center pixel
    /// Default Value: 16
    /// Range:         [0, 63]
    /// Bit Depth:     6u, Q6
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  bpc_fmax;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// bpc_fmin
    ///
    /// Tuning Level:  often_tune
    /// Description:   lower offset factor used in single bpc applied to center pixel
    /// Default Value: 16
    /// Range:         [0, 63]
    /// Bit Depth:     6u, Q6
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  bpc_fmin;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// bpc_maxshft
    ///
    /// Tuning Level:  often_tune
    /// Description:   upper offset (as right-shifting) used in single bpc applied to neighbor pixels
    /// Default Value: 3
    /// Range:         [0, 15]
    /// Bit Depth:     4u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  bpc_maxshft;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// bpc_minshft
    ///
    /// Tuning Level:  often_tune
    /// Description:   lower offset (as right-shifting) used in single bpc applied to neighbor pixels
    /// Default Value: 3
    /// Range:         [0, 15]
    /// Bit Depth:     4u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  bpc_minshft;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// bpc_offset
    ///
    /// Tuning Level:  often_tune
    /// Description:   common absolute offset value used in single bpc applied to both center pixel and neighboring pixel
    /// Default Value: 64
    /// Range:         [0, 4095]
    /// Bit Depth:     12u, Q0
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  bpc_offset;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// blk_pix_matching_rb
    ///
    /// Tuning Level:  often_tune
    /// Description:   R and B channel block matching or pixel matching selection. Value 0 means block matching in determining
    ///                filter coefficient. Value 4 means pixel matching
    /// Default Value: 0
    /// Range:         [0, 4]
    /// Bit Depth:     3u
    /// Notes:         may use 4 for ultra low light cases
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  blk_pix_matching_rb;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// blk_pix_matching_g
    ///
    /// Tuning Level:  often_tune
    /// Description:   Gr and Gb channel block matching or pixel matching selection. Value 0 means block matching in determining
    ///                filter coefficient. Value 4 means pixel matching
    /// Default Value: 0
    /// Range:         [0, 4]
    /// Bit Depth:     3u
    /// Notes:         may use 4 for ultra low light cases
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  blk_pix_matching_g;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// noise_stdlut_level_tab
    ///
    /// Tuning Level:  must_tune
    /// Description:   noise profile in standard deviation
    /// Default Value: 0 6 9 11 12 14 15 16 18 19 20 21 22 23 24 24 25 26 27 27 28 29 30 30 31 32 32 33 33 34 35 35 36 36 37 37 38 39 39 40 40 41 41 42 42 43 43 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
    /// Range:         [0.0, 512.0]
    /// Bit Depth:     float
    /// Length:        65
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct noise_stdlut_level_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// noise_stdlut_level - Array
        ///
        /// Tuning Level:  must_tune
        /// Default Value: 0 6 9 11 12 14 15 16 18 19 20 21 22 23 24 24 25 26 27 27 28 29 30 30 31 32 32 33 33 34 35 35 36 36 37 37 38 39 39 40 40 41 41 42 42 43 43 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
        /// Length:        65
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT noise_stdlut_level[65];
    } noise_stdlut_level_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// distance_ker_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   bit shifting value corresponding to distance weight; [0][] - R/B, [1][] - Gr/Gb
    /// Default Value: 3 2 1 3 2 1
    /// Range:         [1,4]
    /// Bit Depth:     [][0]:3bit; othes:2bit
    /// Length:        6
    /// Notes:         non-zero value n means left shift (n-1); zero value means weight of 0. Range 0: 1-4, 1: 1-2, 2: 1-2
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct distance_ker_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// distance_ker - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 3 2 1 3 2 1
        /// Length:        6
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT distance_ker[6];
    } distance_ker_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// curve_offset_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   offset that is subtracted from normalized difference before generating bilateral coefficients
    /// Default Value: 0 0 0 0
    /// Range:         [0, 127]
    /// Bit Depth:     7
    /// Length:        4
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct curve_offset_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// curve_offset - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 0 0 0 0
        /// Length:        4
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT curve_offset[4];
    } curve_offset_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// noise_prsv_anchor_lo
    ///
    /// Tuning Level:  often_tune
    /// Description:   anchor point below which noise_preserve will be noise_prsv_lo
    /// Default Value: 160
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Notes:         Range of 0 to 1023 corresponds to intensity level 0 to 1023
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  noise_prsv_anchor_lo;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// noise_prsv_anchor_hi
    ///
    /// Tuning Level:  often_tune
    /// Description:   anchor point above which noise_preserve will be a flat maximum value
    /// Default Value: 224
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Notes:         Range of 0 to 1023 corresponds to intensity level 0 to 1023
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  noise_prsv_anchor_hi;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// noise_prsv_lo_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   minimum value for noise preserve, [0] - R/B, [1] - Gr/Gb
    /// Default Value: 0.6 0.6
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     float
    /// Length:        2
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct noise_prsv_lo_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// noise_prsv_lo - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 0.6 0.6
        /// Length:        2
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT noise_prsv_lo[2];
    } noise_prsv_lo_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// noise_prsv_hi_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   maximum value for noise preserve, [0] - R/B, [1] - Gr/Gb
    /// Default Value: 0.6 0.6
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     float
    /// Length:        2
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct noise_prsv_hi_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// noise_prsv_hi - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 0.6 0.6
        /// Length:        2
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT noise_prsv_hi[2];
    } noise_prsv_hi_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// radial_gain_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   base value for each anchor, [0][] for loc_fac0, [1][] for loc_fac1
    /// Default Value: 1 1 1 1 1 1 1 1 1 1
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     float
    /// Length:        10
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct radial_gain_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// radial_gain - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 1 1 1 1 1 1 1 1 1 1
        /// Length:        10
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT radial_gain[10];
    } radial_gain_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// edge_softness
    ///
    /// Tuning Level:  often_tune
    /// Description:   control bilateral filter strength together with noise_std_lut
    /// Default Value: 3.0
    /// Range:         [0.0, 256.0]
    /// Bit Depth:     float
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  edge_softness;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_abf34_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_abf34_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::trigger_pt_type_aec aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// abf34_rgn_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    abf34_rgn_dataType  abf34_rgn_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_abf34_hdr_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_abf34_hdr_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type_aec_hdr hdr_aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct hdr_aec_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_abf34_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                  mod_abf34_aec_dataCount;
        UINT32                  mod_abf34_aec_dataID;
        mod_abf34_aec_dataType* mod_abf34_aec_data;
    } hdr_aec_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_abf34_drc_gain_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_abf34_drc_gain_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// drc_gain_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type drc_gain_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// drc_gain_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct drc_gain_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_abf34_hdr_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                      mod_abf34_hdr_aec_dataCount;
        UINT32                      mod_abf34_hdr_aec_dataID;
        mod_abf34_hdr_aec_dataType* mod_abf34_hdr_aec_data;
    } drc_gain_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_abf34_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_abf34_coreType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mod_abf34_drc_gain_data - Array
    /// Min Length:    1
    /// Max Length:    Unbounded
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                       mod_abf34_drc_gain_dataCount;
    UINT32                       mod_abf34_drc_gain_dataID;
    mod_abf34_drc_gain_dataType* mod_abf34_drc_gain_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_abf34_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_abf34_reserveType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// cross_plane_en
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   enable Gr/Gb cross processing in bilateral filtering
    /// Default Value: 1
    /// Range:         [0,1]
    /// Bit Depth:     1u
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32            cross_plane_en;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// radial_anchor_tab
    ///
    /// Tuning Level:  must_tune
    /// Description:   anchor tables from center to frame boundary
    /// Default Value: 0 0.4 0.6 0.8 1
    /// Range:         [0.0, 1.0]
    /// Bit Depth:     float
    /// Length:        5
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct radial_anchor_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// radial_anchor - Array
        ///
        /// Tuning Level:  must_tune
        /// Default Value: 0 0.4 0.6 0.8 1
        /// Length:        5
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT radial_anchor[5];
    } radial_anchor_tab;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_abf34Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_abf34Type
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_section
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct enable_sectionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        globalelements::enable_flag_type abf_enable;
        globalelements::enable_flag_type sbpc_enable;
    } enable_section;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32 major_revision;
        INT32 minor_revision;
        INT32 incr_revision;
    } module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_variables
    ///
    /// Default Value: control_drc_gain, control_aec_exp_sensitivity_ratio, control_gain
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_variablesStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// control_var_type - Array
        /// Default Value: control_drc_gain, control_aec_exp_sensitivity_ratio, control_gain
        /// Length:        3
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        enum class control_var_typeEnum
        {
            control_drc_gain                  = 0,
            control_exp_time_ratio            = 1,
            control_aec_exp_sensitivity_ratio = 2,
            control_lux_idx                   = 3,
            control_gain                      = 4
        } control_var_type[3];
    } control_variables;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_methodStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_exp_control
        /// Default Value: control_gain
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_type     aec_exp_control;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_hdr_control
        /// Default Value: control_aec_exp_sensitivity_ratio
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_hdr_type aec_hdr_control;
    } control_method;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// dynamic_enable_triggers
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct dynamic_enable_triggersStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// abf_enable
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        struct abf_enableStruct
        {
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// Binary file symbol table entry ID
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            UINT32 SymbolTableID;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// enable
            ///
            /// Tuning Level:  rarely_tune
            /// Description:   enable ABF3.4 module
            /// Default Value: 0
            /// Range:         [0, 1]
            /// Bit Depth:     1u
            /// Notes:         none
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            globalelements::enable_flag_type        enable;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_control_var
            ///
            /// Tuning Level:  rarely_tune
            /// Description:   enable ABF3.4 module
            /// Default Value: control_gain
            /// Range:         [0, 1]
            /// Bit Depth:     1u
            /// Notes:         none
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::control_var_type        hyst_control_var;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_mode
            /// Default Value: UPWARD
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::hyst_direction          hyst_mode;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_trigger
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::trigger_pt_couplet_type hyst_trigger;
        } abf_enable;
    } dynamic_enable_triggers;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_abf34_reserve
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_abf34_reserveType chromatix_abf34_reserve;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_abf34_core
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_abf34_coreType    chromatix_abf34_core;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_abf34TypeClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class chromatix_abf34TypeClass : public ParameterModule, public chromatix_abf34Type
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const UINT16 MAJOR = 3;
    static const UINT16 MINOR = 4;
    static const UINT32 PATCH = 0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_abf34TypeClass(
        const CHAR* name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_abf34TypeClass(
        const CHAR* name,
        UINT32 modeId,
        UINT16 mode,
        UINT16 subMode,
        UINT32 group);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~chromatix_abf34TypeClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load abf34_rgn_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadabf34_rgn_dataType(
        ParameterFileSymbolTableEntry* entry,
        abf34_rgn_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load abf34_rgn_dataType_noise_stdlut_level_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadabf34_rgn_dataType_noise_stdlut_level_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        abf34_rgn_dataType::noise_stdlut_level_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load abf34_rgn_dataType_distance_ker_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadabf34_rgn_dataType_distance_ker_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        abf34_rgn_dataType::distance_ker_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load abf34_rgn_dataType_curve_offset_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadabf34_rgn_dataType_curve_offset_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        abf34_rgn_dataType::curve_offset_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load abf34_rgn_dataType_noise_prsv_lo_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadabf34_rgn_dataType_noise_prsv_lo_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        abf34_rgn_dataType::noise_prsv_lo_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load abf34_rgn_dataType_noise_prsv_hi_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadabf34_rgn_dataType_noise_prsv_hi_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        abf34_rgn_dataType::noise_prsv_hi_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load abf34_rgn_dataType_radial_gain_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadabf34_rgn_dataType_radial_gain_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        abf34_rgn_dataType::radial_gain_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_abf34_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_abf34_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_abf34_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_abf34_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_abf34_hdr_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_abf34_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_abf34_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_abf34_hdr_aec_dataType_hdr_aec_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_abf34_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_abf34_drc_gain_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_abf34_drc_gain_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_abf34_drc_gain_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_abf34_drc_gain_dataType_drc_gain_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_abf34_drc_gain_dataType_drc_gain_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_abf34_drc_gain_dataType::drc_gain_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_abf34_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_abf34_coreType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_abf34_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_abf34_reserveType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_abf34_reserveType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_abf34_reserveType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_abf34_reserveType_radial_anchor_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_abf34_reserveType_radial_anchor_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_abf34_reserveType::radial_anchor_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_abf34Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_abf34Type(
        ParameterFileSymbolTableEntry* entry,
        chromatix_abf34Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load enable_sectionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadenable_sectionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_abf34Type::enable_sectionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module_versionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmodule_versionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_abf34Type::module_versionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_variablesStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_variablesStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_abf34Type::control_variablesStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_methodStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_methodStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_abf34Type::control_methodStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load dynamic_enable_triggersStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loaddynamic_enable_triggersStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_abf34Type::dynamic_enable_triggersStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load dynamic_enable_triggersStruct_abf_enableStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loaddynamic_enable_triggersStruct_abf_enableStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_abf34Type::dynamic_enable_triggersStruct::abf_enableStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_abf34_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_abf34_hdr_aec_dataType(
        mod_abf34_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_abf34_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_abf34_hdr_aec_dataType_hdr_aec_dataStruct(
        mod_abf34_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_abf34_drc_gain_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_abf34_drc_gain_dataType(
        mod_abf34_drc_gain_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_abf34_drc_gain_dataType_drc_gain_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_abf34_drc_gain_dataType_drc_gain_dataStruct(
        mod_abf34_drc_gain_dataType::drc_gain_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_abf34_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_abf34_coreType(
        chromatix_abf34_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_abf34Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_abf34Type(
        chromatix_abf34Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Parse symbol table entry, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const;

}; // End class chromatix_abf34TypeClass

ABF_3_4_0_NAMESPACE_END
#endif // ABF_3_4_0_H

